package com.punch.common.vo.course.temp;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.punch.common.vo.course.CourseContentVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * CourseVO-课程信息 表单
 *
 * @author xiaol
 * @version 1.0.0
 * @since 2020/7/14 10:51
 */
@Data
public class CourseVO implements Serializable {
    /**
     * 课程主键id
     */
    @ApiModelProperty(name = "courseId", notes = "课程主键id,新增操作为空,修改操作需要")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long courseId;
    /**
     * 课程名称
     */
    @ApiModelProperty(name = "courseName", notes = "课程名称")
    private String courseName;

    /**
     * 课程分类名称  单选 (素质课、社团课、托管班...)
     */
    @ApiModelProperty(name = "courseClassify", notes = "课程分类名称  单选 (0-素质课、1-社团课、2-托管班...)")
    private Integer courseClassify;

    /**
     * 课程封面
     */
    @ApiModelProperty(name = "courseImg", notes = "课程封面")
    private String courseImg;
    /**
     * 课程类目Id
     */
    @ApiModelProperty(name = "courseCategoryId", notes = "课程类目Id")
    private List<Long> courseCategoryId;

    /**
     * 课程类目名称
     */
    @ApiModelProperty(name = "courseCategoryName", notes = "课程类目名称")
    private String courseCategoryName;

    /**
     * 课程适用年级名称  1-6年级多选
     */
    @ApiModelProperty(name = "courseGrade", notes = "课程适用年级名称  1-6年级多选")
    private List<Integer> courseGrade;
    /**
     * 场地要求
     */
    @ApiModelProperty(name = "courseSiteRequirements", notes = "场地要求")
    private String courseSiteRequirements;
    /**
     * 单选，选项：1基础、2进阶、3高级
     */
    @ApiModelProperty(name = "courseLevel", notes = "单选，选项：1基础、2进阶、3高级")
    private Integer courseLevel;

    /**
     * 课时数
     */
    @ApiModelProperty(name = "courseHourCount", notes = "课时数")
    private Integer courseHourCount;
    /**
     * 课时单价：单位元
     */
    @ApiModelProperty(name = "courseHourPriceShow", notes = "课时单价：单位元")
    private BigDecimal courseHourPriceShow;
    /**
     * 是否包含教材/教具：勾选框，默认否  0否  1是
     */
    @ApiModelProperty(name = "goodsFlag", notes = "是否包含教材/教具：勾选框，默认否  0否  1是")
    private Integer goodsFlag;
    /**
     * 商品id
     */
    @ApiModelProperty(name = "goodsId", notes = "商品id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long goodsId;
    /**
     * 教材名称/教具名称
     */
    @ApiModelProperty(name = "goodsName", notes = "商品名称")
    private String goodsName;

    /**
     * 教材/教具单价
     */
    @ApiModelProperty(name = "goodsPrice", notes = "商品单价")
    private BigDecimal goodsPriceShow;

    /**
     * 是否必须购买：勾选框，默认否    0否  1是
     */
    @ApiModelProperty(name = "buyFlag", notes = "是否必须购买：勾选框，默认否    0否  1是")
    private Integer buyFlag;
    /**
     * 课程介绍
     */
    @ApiModelProperty(name = "courseIntroduce", notes = "课程介绍")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String courseIntroduce;

    /**
     * 课程内容集合
     */
    @ApiModelProperty(name = "courseContentList", notes = "课程内容集合")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<CourseContentVO> courseContentList;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<String> imageList;
}
